"""
相关配置内容:
1.数据库配置
2.redis配置
3.csrf配置
4.session配置
5.数据库迁移配置
6.日志文件集成
"""
import datetime
import random

from flask import current_app
from flask_migrate import Migrate,MigrateCommand
from flask_script import Manager
from info import create_app,db,models #需要导入model,不然不知道有模型文件存在

#调用方法获取app
from info.models import User

app = create_app("develop")

#创建Manager对象,关联app
manager = Manager(app)
#关联app,db
Migrate(app,db)
#添加操作命令
manager.add_command("db",MigrateCommand)

#创建管理员,使用option装饰之后,可以传递参数,manager作用是可以通过命令行调用
@manager.option('-u', '--username',dest='username')
@manager.option('-p', '--password',dest='password')
def create_super_user(username,password):

    #创建管理员对象
    admin = User()

    #设置属性
    admin.nick_name = username
    admin.password = password
    admin.mobile = username
    admin.is_admin = True

    #保存到数据库
    try:
        db.session.add(admin)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return "添加管理员失败"

    return "添加管理员成功"
    # print("username = %s"%username)
    # print("password = %s"%password)

#添加测试用户
@manager.option('-t', '--test', dest='test')
def add_test_users(test):
    #定义用户容器
    user_list = []

    for num in range(0,1000):
        #创建用户对象
        user = User()

        #设置用户属性
        user.mobile = "138%08d"%num
        user.nick_name = "138%08d"%num
        user.password_hash = "pbkdf2:sha256:50000$ZjE6Abgc$a44d2ae9abe45392e3f1ad2c8097a1a837e3eb46a0ad1d08548a2500132cf026"
        user.is_admin = False

        #设置登录时间,近一个月登录时间
        user.last_login = datetime.datetime.now() - datetime.timedelta(seconds=random.randint(0,3600*24*31))

        #添加容器
        user_list.append(user)

    #添加到数据库
    try:
        db.session.add_all(user_list)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return "添加测试用户失败"

    return "添加测试用户成功"


if __name__ == '__main__':
    manager.run()